1. Field of the Invention
This invention relates to data processing systems, and more specifically to memory and input/output (I/O) systems used in data processing and for transmitting data between processors and providing a more cost effective shared volatile and non-volatile memory access architecture for use by a multiprocessor system.
2. Description of the Related Art
The following descriptions and examples are not admitted to be prior art by virtue of their inclusion within this section.
A typical computer system includes at least one processor coupled to a memory system including both volatile memory and nonvolatile memory. Volatile memory is memory that requires electrical power to maintain stored data. Examples of volatile memory are dynamic random access memory (DRAM) and static random access memory (SRAM).
Nonvolatile memory is memory that is capable of maintaining stored data even when not receiving electrical power. Examples of nonvolatile memory include read only memory (ROM), flash memory, and devices including magnetic storage media such as hard disk drives and floppy disk drives.
The typical computer system relies on operating system software for direct control and management of hardware, basic system operations, and a foundation upon which to run application software. A typical operating system is quite large and is stored on a disk drive (e.g., a hard disk drive). The term “booting” refers to a bootstrapping process that loads and starts the operating system when electrical power is applied to the typical computer system (i.e., when the typical computer system is turned on). In the typical computer system, the bootstrapping process begins with the processor executing software instructions (i.e., “boot code”) stored in the nonvolatile memory.
In general, flash memory is a form of nonvolatile electrically erasable programmable read only memory (EEPROM) that allows multiple memory locations to be erased or written in one programming operation. A flash memory is divided into contiguous groups of storage units called blocks. While individual storage units (e.g., bytes or words) can be read or programmed in a random access fashion, all the storage units of a given block are erased at the same time. Starting with a freshly erased block, any storage unit within that block can be programmed. Once a storage unit is programmed, the contents of the storage unit cannot be changed again until the entire block is erased. Flash memory is commonly used in flash memory cards, USB flash drives, portable music players, digital cameras, and mobile phones.
There are two main types of flash memory: NOR flash memory and NAND flash memory. NOR flash memory is an older technology, and NOR flash memory has a standard memory interface. The standard NOR flash memory interface allows access to any storage unit in the NOR flash memory at any given time. That is, a NOR flash memory is a random access memory, making NOR flash memory suitable for storage of computer instructions to be accessed by a processor and executed (e.g., boot code). Similar to RAM, DRAM or SDRAM accesses, NOR flash memory entails the typical chip select, followed by addressing of a word line, and reading from or writing to a storage cell via bit lines, etc. NOR flash memory access is therefore sometimes referred to as a “traditional” memory access.
Direct access of a memory by a processor to obtain instructions straight from the memory, without duplication of the instructions in an intermediate memory such as DRAM or SRAM, and execution of those instructions by the processor, is generally referred to as “execution in place” or “XIP.” NOR flash memory is suitable for execution in place (XIP), and is often used to store boot code. For example, a set of cells can be selected within a particular block of the NOR flash storage array, and the information contained therein can be sent directly to the processor to fulfill XIP.
NAND flash memory, on the other hand, is a more dense technology, and NAND flash memory does not involve the typical memory access or memory interface associated with RAM, DRAM, SDRAM or NOR flash memories. A typical NAND flash memory interface allows only sequential access to stored data. Instead of being able to randomly access a storage cell or a block of storage cells, as in volatile RAM or non-volatile NOR, the minimum region accessible in NAND flash is a page, with multiple pages within a given block of data—similar to accessing a hard drive unit. As a result, a NAND flash memory is more suitable for mass storage and generally not suitable for storage of computer instructions to be accessed by a processor and executed (e.g., boot code). That is, NAND flash memory is generally not suitable for XIP.
The typical computer system includes several input/output (I/O) interfaces or ports for connecting to peripheral devices such as display screens or monitors, keyboards, pointing devices such as mice, disk drives, modems, and printers. Each port typically has an electrical interface with terminals in a defined physical arrangement for connecting to signal lines, and a protocol for sending and/or receiving signals via the electrical interface.
In order to meet data processing requirements that exceed the capability of a single processor, many computer systems include multiple processors. In such multiprocessor systems, two or more processors typically execute instructions simultaneously. Some of the processors may be dedicated to separate discrete tasks, and/or some of the processors may work together to accomplish a single task. For example, a multiprocessor system may include a main processor and a second co-processor that assists the main processor in performing certain types of operations. Exemplary co-processor operations include complex mathematical operations and graphic image processing operations.